application: Be save against impl being NULL
authorMatthias Clasen <mclasen@redhat.com>
Wed, 23 Sep 2015 18:35:58 +0000 (14:35 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 23 Sep 2015 18:38:08 +0000 (14:38 -0400)
We clear the impl in shutdown, so all callbacks that may
happen at a later time need to be prepared for this.

https://bugzilla.gnome.org/show_bug.cgi?id=755432

gtk/gtkapplication.c

index af134519284950154785bfe56c1669f9626a4806..ba7ef7b49e19ba1294ddd470e265ddf50e2a0458 100644 (file)
@@ -723,7 +723,8 @@ gtk_application_window_removed (GtkApplication *application,
 
   old_active = priv->windows;
 
-  gtk_application_impl_window_removed (application->priv->impl, window);
+  if (priv->impl)
+    gtk_application_impl_window_removed (priv->impl, window);
 
   g_signal_handlers_disconnect_by_func (window,
                                         gtk_application_focus_in_event_cb,
@@ -733,9 +734,9 @@ gtk_application_window_removed (GtkApplication *application,
   priv->windows = g_list_remove (priv->windows, window);
   gtk_window_set_application (window, NULL);
 
-  if (priv->windows != old_active)
+  if (priv->windows != old_active && priv->impl)
     {
-      gtk_application_impl_active_window_changed (application->priv->impl, priv->windows ? priv->windows->data : NULL);
+      gtk_application_impl_active_window_changed (priv->impl, priv->windows ? priv->windows->data : NULL);
       g_object_notify_by_pspec (G_OBJECT (application), gtk_application_props[PROP_ACTIVE_WINDOW]);
     }
 }